状态码为客户端提供了一种理解事物处理结果的便捷方式。
总的来说,可以将HTTP状态码分为五类:
以1
开头的信息性状态码;
以2
开头的成功状态码;
以3
开头的重定向状态码;
以4
开头的客户端错误状态码;
以5
开头的服务器错误状态码;
100 ~ 199 —— 信息性状态码
100 Continue
说明收到了初始部分,请客户端继续。
100 Continue
状态码是一种优化,客户端应用程序只有在避免向服务器发送一个服务器无法处理或使用的大实体时,才应该使用100 Continue
。
101 Switching Protocols
说明服务器正在根据客户端的指定,将协议切换成Update首部所列的协议
200 ~ 299 —— 成功状态码
客户端发起请求时,这些请求通常都是成功的。服务器有一组用来表示成功的状态码,分别对应于不同类型的请求。
200 OK
请求没问题实体的主体部分包含了所请求的资源。
201 Created
用于创建服务器对象的请求(比如PUT
)。响应的实体主体部分中应该包含各种引用了已创建的资源的URL。
202 Accepted
请求已被接受,但服务器还未对其执行任何动作。
203 Not-Authoritative
实体首部包含的信息不是来自于源端服务器,而是来自资源的一份副本,如果中间节点上有一份资源副本,但无法或者没有对它所发送的与资源有关的元信息进行验证,就会出现这种情况。
204 Not Content
响应报文中包含若干首部和一个状态行,但没有实体的主体部分。
205 Reset Content
另一个主要用负责告诉浏览器清除当前页面中的所有HTML表单元素。
206 Partial Content
成功执行了一个部分或Range(范围)请求。
300 ~ 399 —— 重定向状态码
重定向状态码要么告知客户端使用替代位置来访问他们所感兴趣的资源,要么就提供一个替代响应而不是资源的内容。
其中有些状态码之间存在一些交叉,这些差别大部分源于 HTTP/1.0 和 HTTP/1.1 应用程序对这些状态码处理方式不同。
300 Multiple Choices
客户端请求一个实际指向多个资源的URL时会返回这个状态码。
301 Moved Permanently
在请求的URL已被移除时使用。
302 Found
与301
状态码类似;但是,客户端应该使用location
首部给出的URL来临时定位资源,将来的请求仍应使用老的URL。
303 See Other
告知客户端应该用另一个URL来获取资源。
304 Not Modified
客户端可以通过所包含的请求首部,使其请求变成有条件的。
305 Use Proxy
用来说明必须通过一个代理来访问资源;代理的位置由location
首部给出。
307 Temporary Redirect
与301
状态码类似,但是,客户端应该使用location
首部给出的URL来临时定位资源,将来的请求仍应使用老的URL。
400 ~ 499 —— 客户端错误状态码
有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求报文,或者最常见的是,请求一个不存在的URL
400 Bad Request
用于告知客户端它发送了一个错误的请求。
401 Unauthorized
与适当的首部一同返回,在这些首部中请求客户端在获取对资源的访问权之前,对自己进行认证。
402 Payment Required
现在这个状态码还未使用,但已经被保留,以用作未来之用。
403 Forbidden
用于说明请求被服务器拒绝了。
404 Not Found
用于说明服务器无法找到所请求的URL。
405 Method Not Allowed
发起的请求中带有所请求的URL不支持的方法时,使用此状态码。
406 Not Acceptable
客户端可以指定参数来说明它们愿意接收什么类型的实体。
407 Proxy Authentication
与401
状态码类似,但用于要求对资源进行认证的代理服务器。
408 Request Timeout
如果客户端完成请求所花的时间太长,服务器可以回送此状态码,并关闭连接。
409 Conflict
用于说明请求可能在资源上引发一些冲突。
410 Gone
与404
类似,只是服务器曾经拥有过此资源。
411 Length Required
服务器要求在请求报文中包含Content-Length
首部时使用。
412 Precondition Failed
客户端发起了条件请求,且其中一个条件失败了的时候使用。
413 Request Entity Too Large
客户端发送的实体主体部分比服务器能够活着希望处理的要长时,使用此状态码。
414 Request URI Too Long
客户端所发请求中的请求URL比服务器能够或者希望处理的要长是,使用此代码。
415 Unsupported Media Type
服务器无法理解或无法支持客户端所发实体的内容类型时,使用此状态码。
416 Request Range Not Satisfiable
请求报文所请求的是指定资源的某个范围,而此范围无效或者无法满足时,使用此状态码。
417 Expectation Failed
请求的Expect请求首部包含了一个期望,但服务器无法满足此期望时,使用此状态码。
500 ~ 599 —— 服务器错误状态码
又有时客户端发送了一条有效请求,服务器自身却出错了。这可能是客户端碰上了服务器的缺陷,或者服务器上的子元素,比如某个网关资源,出了错。
500 Internal Server Error
服务器遇到一个妨碍它为请求提供服务的错误时,使用此代码。
501 Not Implemented
客户端发起的请求超出服务器的能力范围时,使用此代码。
502 Bad Gateway
作为代理或网关使用的服务器从请求响应链的下一条链路上收到了一条伪响应。
503 Service Unavailable
用来说明服务器现在无法为请求提供服务,但将来可以。
504 Gateway Timeout
与状态码408
类似,只是这里的响应来自一个网关或者代理,它们在等待另一台服务器对其请求进行响应时超时了。
505 HTTP Version Not Supported
服务器收到的请求使用了它无法或不愿支持的协议版本时,使用此状态码。